package com.demon.framework.util.valid;

import java.util.regex.Pattern;

/**
 * 正则校验
 *
 * @author Demon-HY
 * @date 20120/7/24
 */
public class ValidateUtil {

    /**
     * 正则：手机号（精确）
     * <p>移动：134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198</p>
     * <p>联通：130、131、132、145、155、156、175、176、185、186、166</p>
     * <p>电信：133、153、173、177、180、181、189、199、191</p>
     * <p>全球星：1349</p>
     * <p>虚拟运营商：170,171</p>
     * <p>上网卡专属号段: 14</p>
     */
    public static final String MOBILE = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,1,3,5-8])|(18[0-9])|166|198|199|191|(147))\\d{8}$";
    /**
     * 手机号正则表达式(用于提取)
     */
    public static final String MOBILE_EXTRACT = "((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|191|(147))\\d{8}";
    /**
     * 正则表达式：验证用户名
     */
    public static final String USERNAME = "^[a-zA-Z]\\w{2,11}$";
    /**
     * 正则表达式：验证昵称
     */
    public static final String NICKNAME = "^[\\u4e00-\\u9fa5_a-zA-Z0-9_]{2,10}$";
    /**
     * 支付密码:长度为6位
     */
    public static final String PAYMENT_PWD = "^\\d{6}$";
    /**
     * 正则表达式：验证密码 (必须字母与数字组合)
     */
    public static final String PASSWORD = "^(?!([a-zA-Z]+|\\d+)$)[a-zA-Z\\d]{8,20}$";

    /**
     * 正则表达式：验证邮箱
     */
    public static final String EMAIL = "^([a-z0-9A-Z]+[-|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
    /**
     * 正则表达式：验证汉字
     */
    public static final String CHINESE = "^[\u4e00-\u9fa5],*$";
    /**
     * 正则表达式：验证身份证
     */
    public static final String ID_CARD = "^(\\d{6})(18|19|20)?(\\d{2})([01]\\d)([0123]\\d)(\\d{3})(\\d|X)?";
    /**
     * 正则表达式：验证URL
     */
    public static final String URL = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
    /**
     * 正则表达式：验证IP地址
     */
    public static final String IP_ADDR = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";
    /**
     * 正则表达式：验证数字
     */
    public static final String NUMBER = "[0-9]*";
    /**
     * 正则表达式：验证图片格式
     */
    public static final String IMAGE = "(?i)(jpg|jpeg|png|gif)$";

    /**
     * 被艾特的人转移文本正则表达式(提取)
     */
    public static final String ATTER_FORMAT_STR = "[#][(][^\\|]+[\\|][\\d]+[)][#]";

    /**
     * 校验真实姓名:长度2-7,不能有字符和数字,只能是中文
     */
    public static final String REAL_NAME = "(([\\u4E00-\\u9FA5]{2,7}))";

    public static boolean isMatch(String regex, CharSequence input) {
        return input != null && input.length() > 0 && Pattern.matches(regex, input);
    }
}
